void process(launch_data_t value, const char *name, void *baton) { if (!strstr(name, "apple")) return; if (launch_data_get_type(value) != LAUNCH_DATA_DICTIONARY) return;
auto integer(launch_data_dict_lookup(value, LAUNCH_JOBKEY_PID)); if (integer == NULL || launch_data_get_type(integer) != LAUNCH_DATA_INTEGER) return;
auto pid(launch_data_get_integer(integer)); if (kill(pid, 0) == -1) return;
auto string(launch_data_dict_lookup(value, LAUNCH_JOBKEY_LABEL)); if (string == NULL || launch_data_get_type(string) != LAUNCH_DATA_STRING) return; auto label(launch_data_get_string(string));
auto stop(launch_data_alloc(LAUNCH_DATA_DICTIONARY)); launch_data_dict_insert(stop, string, LAUNCH_KEY_STOPJOB);
auto result(launch_msg(stop)); launch_data_free(stop); if (result == NULL) return;
if (launch_data_get_type(result) != LAUNCH_DATA_ERRNO) NSLog(@"yr:ioser:%s\n", label); elseif (auto number = launch_data_get_errno(result)) NSLog(@"yr:%s: %s\n", label, strerror(number));
launch_data_free(result); }
int main(int argc, char **argv, char **envp) { NSLog(@"ldrestar: ldrestar start"); auto request(launch_data_new_string(LAUNCH_KEY_GETJOBS)); auto response(launch_msg(request)); launch_data_free(request);
if (response == NULL) return EX_UNAVAILABLE; if (launch_data_get_type(response) != LAUNCH_DATA_DICTIONARY) return EX_SOFTWARE; launch_data_dict_iterate(response, &process, NULL); return EX_OK; }